#!/usr/bin/env python3
"""
启动 InCloud MCP Server 的脚本
"""
import sys
import os
import subprocess

# 添加 src 目录到 Python 路径
sys.path.insert(0, os.path.join(os.path.dirname(__file__), 'src'))

def start_server(transport="sse", port=8000, host="0.0.0.0"):
    """启动 InCloud MCP Server"""
    
    print("🚀 启动 InCloud MCP Server")
    print("=" * 50)
    print(f"传输方式: {transport}")
    print(f"端口: {port}")
    print(f"主机: {host}")
    print(f"配置文件: config.yaml")
    print("=" * 50)
    
    try:
        # 检查配置文件是否存在
        if not os.path.exists('config.yaml'):
            print("❌ 配置文件 config.yaml 不存在")
            print("请先创建配置文件或运行: incloud-mcp-server init")
            return False
        
        # 构建命令
        cmd = [
            sys.executable, "-m", "incloud_mcp_server.server",
            "--config", "config.yaml",
            "--transport", transport,
            "--port", str(port),
            "--host", host,
            "--log-level", "INFO"
        ]
        
        print(f"执行命令: {' '.join(cmd)}")
        print("=" * 50)
        
        # 启动服务器
        if transport == "sse":
            print(f"🌐 服务器将在 http://{host}:{port} 启动")
            print("📡 使用 SSE (Server-Sent Events) 传输")
        elif transport == "streamable-http":
            print(f"🌐 服务器将在 http://{host}:{port} 启动")
            print("📡 使用 Streamable HTTP 传输")
        else:
            print("📡 使用 STDIO 传输")
        
        print("\n🔄 正在启动服务器...")
        
        # 运行服务器
        result = subprocess.run(cmd, cwd=os.path.dirname(__file__))
        return result.returncode == 0
        
    except KeyboardInterrupt:
        print("\n\n⏹️  服务器已停止")
        return True
    except Exception as e:
        print(f"\n❌ 启动服务器时出错: {e}")
        return False

if __name__ == "__main__":
    import argparse
    
    parser = argparse.ArgumentParser(description="启动 InCloud MCP Server")
    parser.add_argument("--transport", choices=["stdio", "sse", "streamable-http"], 
                       default="sse", help="传输方式")
    parser.add_argument("--port", type=int, default=8000, help="端口号")
    parser.add_argument("--host", default="0.0.0.0", help="主机地址")
    
    args = parser.parse_args()
    
    success = start_server(args.transport, args.port, args.host)
    sys.exit(0 if success else 1)
